/**
 *
 * 校验数据
 */

// 匹配金额 正整数 最多两位正小数 has0 是否包括0
export function validateRMB(str, has0 = false) {
  if (has0) {
    const reg = /^(([1-9][0-9]*)|(0\.(0[1-9]|[1-9][0-9]{0,1}))|([1-9][0-9]*\.\d{1,2})|([0]))$/
    return reg.test(str)
  } else {
    const reg = /^(([1-9][0-9]*)|(0\.(0[1-9]|[1-9][0-9]{0,1}))|([1-9][0-9]*\.\d{1,2}))$/
    return reg.test(str)
  }
}

// 匹配字符长度必须有值  传入str跟最大值length
export function validateSTRLEN(str, length) {
  const strLength = getStrLength(str)
  return strLength < (length + 1)
}

// 匹配折扣 只能正整数最多1位小数  0.1到9.9折
export function validateDISCOUNT(str) {
  const reg = /^((0\.[1-9])|([1-9])|([1-9]\.\d{1}))$/
  return reg.test(str)
}

//  暂留 匹配1到10  100 百万 千万
export function validatePOSITIVEINT(str, max) {
  switch (max) {
    case 10:
      const reg10 = /^([1-9]|10)$/
      return reg10.test(str)
    case 100:
      const reg100 = /^([1-9]\d{0,1}|100)$/
      return reg100.test(str)
  }
}

// 匹配比例 1到100  has0 是否包括0
export function validatePERCENT(str, has0 = false) {
  if (!has0) {
    const reg = /^([1-9]\d{0,1}|100)$/
    return reg.test(str)
  } else {
    const reg = /^([1-9]\d{0,1}|100|0)$/
    return reg.test(str)
  }
}

// 匹配比例 1到99正整数
export function validatePERCENT1to99(str) {
  const reg = /^([1-9]\d{0,1})$/
  return reg.test(str)
}

// 匹配比例 0.1到100
export function validatePERMILL1to1000(str) {
  const reg = /^((0\.[1-9])|[1-9]\d{0,1}|([1-9]\d{0,1}\.\d{1})|100|100.0)$/
  return reg.test(str)
}

// 匹配大于1的正整数
export function validateLOCKDAY(str) {
  const reg = /^([1-9]\d{0,1})$/
  return reg.test(str)
}

/* 用户 信息 */
// 匹配手机
export function validateTELPHONE(str) {
  const reg = /^0?(1[3-9])[0-9]{9}$/
  return reg.test(str)
}

// 匹配联系电话
export function validatePHONE(str) {
  const reg = /((0?(1[3-9])[0-9]{9})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/
  return reg.test(str)
}

// 匹配身份证
export function validateIDCARD(str) {
  const reg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
  return reg.test(str)
}

// 匹配邮箱
export function validateEMAIL(str) {
  const reg = /^\w+@\w+\.\w+(\.\w+)*$/
  return reg.test(str)
}

// 匹配登录账号
export function validateLoginName(str) {
  const reg = /^[A-Za-z0-9]{1,12}$/
  return reg.test(str)
}

// 匹配密码 6位数字
export function validatePSW(str) {
  const reg = /^[0-9]{6}$/
  return reg.test(str)
}

// 匹配操作密码 6位数字
export function validateCONFIGPSW(str) {
  const reg = /^[0-9]{6}$/
  return reg.test(str)
}

/* 合法url*/
export function validateURL(str) {
  const reg = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/
  return reg.test(str)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validatAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

// 获取字符串的长度
function getStrLength(str) {
  var realLength = 0; var len = str.length; var charCode = -1
  for (var i = 0; i < len; i++) {
    charCode = str.charCodeAt(i)
    if (charCode >= 0 && charCode <= 128) realLength += 1
    else realLength += 2
  }
  return realLength
}

